﻿#define _CRT_SECURE_NO_WARNINGS 1
// 原题连接：https://www.luogu.com.cn/problem/P1011
/*
题目描述
火车从始发站（称为第
1
1 站）开出，在始发站上车的人数为
�
a，然后到达第
2
2 站，在第
2
2 站有人上、下车，但上、下车的人数相同，因此在第
2
2 站开出时（即在到达第
3
3 站之前）车上的人数保持为
�
a 人。从第
3
3 站起（包括第
3
3 站）上、下车的人数有一定规律：上车的人数都是前两站上车人数之和，而下车人数等于上一站上车人数，一直到终点站的前一站（第
�
−
1
n−1 站），都满足此规律。现给出的条件是：共有
�
n 个车站，始发站上车的人数为
�
a，最后一站下车的人数是
�
m（全部下车）。试问
�
x 站开出时车上的人数是多少？

输入格式
输入只有一行四个整数，分别表示始发站上车人数
�
a，车站数
�
n，终点站下车人数
�
m 和所求的站点编号
�
x。

输出格式
输出一行一个整数表示答案：从
�
x 站开出时车上的人数。

*/

// 开始解题：
// 方法——模拟 + 动态规划
#include <iostream>
using namespace std;
int sum1[23] = { 0 }, sum2[23] = { 0 };

int main() {
	int a = 0, b = 0, n = 0, m = 0, x = 0;
	cin >> a >> n >> m >> x;
	// 初始化
	sum1[1] = 1, sum1[2] = 1, sum1[3] = 2;
	for (int i = 4; i <= n - 1; i++) {
		sum1[i] = sum1[i - 1] + sum1[i - 2] - 1;
		sum2[i] = sum2[i - 1] + sum2[i - 2] + 1;
	}
	b = (m - a * sum1[n - 1]) / sum2[n - 1];
	cout << (a * sum1[x] + b * sum2[x]) << endl;
	return 0;
}